﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.Views
{
    /// <summary>
    /// Denna klass, av typen UserControl, är till för att presentera, låsa och exportera intäktsrapporter.
    /// Klassen specificerar även hur tabeller skall vara definerade.
    /// </summary>
    public partial class Intaktsrapporter : UserControl
    {
        private Domain.TextfileController tfc;
        private Domain.RapportController rC;
        private const int prodIDColumn = 0;
        private const int prodNameColumn = 1;
        private const int customerIDColumn = 2;
        private const int customerNameColumn = 3;
        private const int avtalColumn = 4;
        private const int gradAvtalColumn = 5;
        private const int tilläggColumn = 6;
        private const int gradTilläggColumn = 7;
        private const int budgetColumn = 8;
        private const int timColumn = 9;
        private const int låstColumn = 11;
        private const int dateColumn = 12;
        private const int signeradColumn = 13;
        private const int intäktsBudgIDColumn = 14;
        private const int prodgruppColumn = 15;
        private const int avdelningColumn = 16;


        public Intaktsrapporter()
        {
            InitializeComponent();
            AccessController.Instance.MainView = this;
            btnRapporterLasIntaktsbudget.Enabled = AccessController.Instance.UserRoleLoggedInUser.IntäktsrapporterLåsBudget;
            rC = new Domain.RapportController();
        }
        public void clearDatagridView()
        {
            if (this.dgvIntaktsRapport.DataSource != null)
            {
                this.dgvIntaktsRapport.DataSource = null;
            }
            else
            {
                this.dgvIntaktsRapport.Rows.Clear();
            }
        }


        public void UpdateDGV(List<Kund> Rapport)
        {
            dgvIntaktsRapport.DataSource = Rapport;
        }

        private void btnRapporterTextfilExport_Click(object sender, EventArgs e)
        {
            tfc = new Domain.TextfileController();
            tfc.writeFile();
        }

        private void btnRapporterLasIntaktsbudget_Click(object sender, EventArgs e)
        {
            bool successfull = false;
            if (AccessController.Instance.UserRoleLoggedInUser.IntäktsrapporterLåsBudget)
            {
                if (rC.kontrolleraGradAndLockedIntäktsbudget().Count < 1)
                {
                    DialogResult dialogResult = MessageBox.Show("Inga osäkra och olåsta intäktsbudgeteringar som avser år "
                        + (DateTime.Now.Year), "Inga osäkra budgeteringar", MessageBoxButtons.OK);
                }
                else
                {
                    List<string> temp = new List<string>();
                    temp.Add("Följande olåsta intäktsbudgeteringar som avser år " + (DateTime.Now.Year + 1)
                        + " är av typen osäker.\n Vill du fortsätta med låsning av budget?");
                    foreach (Intäktsbudgetregister i in rC.kontrolleraGradAndLockedIntäktsbudget())
                    {
                        temp.Add("ID: " + i.intBudID + " Personalsignatur: " + i.signatur + " KundID: " + i.kundID + " ProduktID: " + i.produktID);
                    }

                    var message = string.Join(Environment.NewLine, temp.ToArray());

                    DialogResult dialogResult = MessageBox.Show(message, "Osäkra budgeteringar", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        successfull = rC.LockIntäktsBudgets();
                    }
                }
                btnRapporterTextfilExport.Enabled = successfull;
            }
        }

        public void ColumnHider(string reportStyle)
        {
            if (reportStyle == "Ej budgeterade kunder")
            {
                dgvIntaktsRapport.Columns[prodIDColumn].Width = 60;
                dgvIntaktsRapport.Columns[prodNameColumn].Width = 130;
                dgvIntaktsRapport.Columns["Email"].Width = 130;
                dgvIntaktsRapport.Columns["Signerad"].Visible = false;
                dgvIntaktsRapport.Columns["Datum"].Visible = false;
            }
            if (reportStyle == "Ej budgeterade produkter")
            {
                dgvIntaktsRapport.Columns[prodIDColumn].Width = 80;
                dgvIntaktsRapport.Columns[prodNameColumn].Width = 210;
                dgvIntaktsRapport.Columns[customerIDColumn].Width = 210;
                dgvIntaktsRapport.Columns["ProduktGruppID"].Visible = false;
                dgvIntaktsRapport.Columns["Signerad"].Visible = false;
                dgvIntaktsRapport.Columns["Datum"].Visible = false;
            }
            if (reportStyle == "Budget per kund" || reportStyle == "Budget per kund och produktgrupp" || reportStyle == "Budget per kund och produkt" || reportStyle == "Budet per kund och produktionsområde")
            {
                dgvIntaktsRapport.Columns[customerIDColumn].Visible = false;
                dgvIntaktsRapport.Columns[customerNameColumn].Visible = false;
                dgvIntaktsRapport.Columns[låstColumn].Visible = false;
                dgvIntaktsRapport.Columns[dateColumn].Visible = false;
                dgvIntaktsRapport.Columns[avdelningColumn].Visible = false;
                dgvIntaktsRapport.Columns[prodIDColumn].Width = 80;
                dgvIntaktsRapport.Columns[prodNameColumn].Width = 130;
                dgvIntaktsRapport.Columns[avtalColumn].Width = 80;
                dgvIntaktsRapport.Columns[tilläggColumn].Width = 80;
                dgvIntaktsRapport.Columns[timColumn].Width = 80;
                dgvIntaktsRapport.Columns[budgetColumn].Width = 80;
                dgvIntaktsRapport.Columns[dateColumn].Width = 60;
                dgvIntaktsRapport.Columns[gradAvtalColumn].Width = 80;
                dgvIntaktsRapport.Columns[gradTilläggColumn].Width = 80;
                dgvIntaktsRapport.Columns[prodgruppColumn].Visible = false;
                dgvIntaktsRapport.Columns[intäktsBudgIDColumn].Visible = false;

                lblTotalbelopp.Text = "Totalbelopp:";
            }
            if (reportStyle == "Budget per produkt")
            {
                dgvIntaktsRapport.Columns[prodIDColumn].Visible = false;
                dgvIntaktsRapport.Columns[prodNameColumn].Visible = false;
                dgvIntaktsRapport.Columns[låstColumn].Visible = false;
                dgvIntaktsRapport.Columns[dateColumn].Visible = false;
                dgvIntaktsRapport.Columns[avdelningColumn].Visible = false;
                dgvIntaktsRapport.Columns[prodNameColumn].Width = 130;
                dgvIntaktsRapport.Columns[avtalColumn].Width = 80;
                dgvIntaktsRapport.Columns[tilläggColumn].Width = 80;
                dgvIntaktsRapport.Columns[timColumn].Width = 80;
                dgvIntaktsRapport.Columns[budgetColumn].Width = 80;
                dgvIntaktsRapport.Columns[dateColumn].Width = 60;
                dgvIntaktsRapport.Columns[gradAvtalColumn].Width = 80;
                dgvIntaktsRapport.Columns[gradTilläggColumn].Width = 80;
                dgvIntaktsRapport.Columns[prodgruppColumn].Visible = false;
                dgvIntaktsRapport.Columns[intäktsBudgIDColumn].Visible = false;

                lblTotalbelopp.Text = "Totalbelopp:";
            }



        }
        public void TbSum(string val)
        {

            int antal = 0;
            int avtal = 0;
            int tillägg = 0;
            int budget = 0;
            int timmar = 0;

            if (val == "Kunder per produkt")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Antal kunder:";
                tBAntal.Visible = true;
                antal = dgvIntaktsRapport.Rows.Count;
                tBSumAvtal.Visible = false;
                tBSumTillägg.Visible = false;
                tBSumBudget.Visible = false;
                dgvIntaktsRapport.Columns["Kundnamn"].Width = 200;
                dgvIntaktsRapport.Columns["Signerad"].Visible = false;
                dgvIntaktsRapport.Columns["Datum"].Visible = false;
                dgvIntaktsRapport.Columns["Email"].Width = 220;
            }
            if (val == "Ej budgeterade kunder")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Antal kunder:";
                tBAntal.Visible = true;
                antal = dgvIntaktsRapport.Rows.Count;
                tBSumAvtal.Visible = false;
                tBSumTillägg.Visible = false;
                tBSumBudget.Visible = false;
                dgvIntaktsRapport.Columns["Email"].Width = 240;
                dgvIntaktsRapport.Columns["Kundnamn"].Width = 200;
            }

            if (val == "Ej budgeterade produkter")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Antal produkter:";
                tBAntal.Visible = true;
                antal = dgvIntaktsRapport.Rows.Count;
                tBSumAvtal.Visible = false;
                tBSumTillägg.Visible = false;
                tBSumBudget.Visible = false;

            }
            if (val == "Budget per kund" || val == "Budget per kund och produkt" || val == "Budget per kund och produktgrupp" || val == "Budget per kund och produktionsområde")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Totalbelopp:";
                tBAntal.Visible = false;
                tBSumAvtal.Visible = true;
                tBSumAvtal.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width), 0);
                tBSumAvtal.Width = dgvIntaktsRapport.Columns[avtalColumn].Width;
                tBSumTillägg.Visible = true;
                tBSumTillägg.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns[avtalColumn].Width + dgvIntaktsRapport.Columns[gradAvtalColumn].Width), 0);
                tBSumTillägg.Width = dgvIntaktsRapport.Columns[tilläggColumn].Width;
                tBSumBudget.Visible = true;
                tBSumBudget.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns[avtalColumn].Width + dgvIntaktsRapport.Columns[gradAvtalColumn].Width + dgvIntaktsRapport.Columns[tilläggColumn].Width + dgvIntaktsRapport.Columns[gradTilläggColumn].Width), 0);
                tBSumBudget.Width = dgvIntaktsRapport.Columns[budgetColumn].Width;
                tBSumTimmar.Visible = true;
                tBSumTimmar.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns[avtalColumn].Width + dgvIntaktsRapport.Columns[gradAvtalColumn].Width + dgvIntaktsRapport.Columns[tilläggColumn].Width + dgvIntaktsRapport.Columns[gradTilläggColumn].Width + dgvIntaktsRapport.Columns[budgetColumn].Width), 0);
                tBSumTimmar.Width = dgvIntaktsRapport.Columns[timColumn].Width;
                dgvIntaktsRapport.Columns["AvserDatum"].Visible = false;
                dgvIntaktsRapport.Columns["Signatur"].Width = 60;
                dgvIntaktsRapport.Columns["Kommentar"].Width = 180;
                hogerJustera();
                for (int i = 0; i < dgvIntaktsRapport.Rows.Count; i++)
                {
                    avtal = avtal + int.Parse(dgvIntaktsRapport.Rows[i].Cells[avtalColumn].Value.ToString());
                }
                for (int j = 0; j < dgvIntaktsRapport.Rows.Count; j++)
                {
                    tillägg = tillägg + int.Parse(dgvIntaktsRapport.Rows[j].Cells[tilläggColumn].Value.ToString());
                }
                for (int k = 0; k < dgvIntaktsRapport.Rows.Count; k++)
                {
                    budget = budget + int.Parse(dgvIntaktsRapport.Rows[k].Cells[budgetColumn].Value.ToString());
                }
                for (int l = 0; l < dgvIntaktsRapport.Rows.Count; l++)
                {
                    if (dgvIntaktsRapport.Rows[l].Cells[timColumn].Value != null)
                    {
                        timmar = timmar + int.Parse(dgvIntaktsRapport.Rows[l].Cells[timColumn].Value.ToString());
                    }
                }


            }
            if (val == "Budget per produkt")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Totalbelopp:";
                tBAntal.Visible = false;
                tBSumAvtal.Visible = true;
                dgvIntaktsRapport.Columns["AvserDatum"].Visible = false;
                dgvIntaktsRapport.Columns["Kundnamn"].Width = 110;
                tBSumAvtal.Location = new Point((dgvIntaktsRapport.Columns[customerIDColumn].Width + dgvIntaktsRapport.Columns[customerNameColumn].Width), 0);
                tBSumAvtal.Width = dgvIntaktsRapport.Columns[avtalColumn].Width;
                tBSumTillägg.Visible = true;
                tBSumTillägg.Location = new Point((dgvIntaktsRapport.Columns[customerIDColumn].Width + dgvIntaktsRapport.Columns[customerNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["GradAvtal"].Width), 0);
                tBSumTillägg.Width = dgvIntaktsRapport.Columns[tilläggColumn].Width;
                tBSumBudget.Visible = true;
                tBSumBudget.Location = new Point((dgvIntaktsRapport.Columns[customerIDColumn].Width + dgvIntaktsRapport.Columns[customerNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["GradAvtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width + dgvIntaktsRapport.Columns["GradTillägg"].Width), 0);
                tBSumBudget.Width = dgvIntaktsRapport.Columns["Budget"].Width;
                tBSumTimmar.Visible = true;
                tBSumTimmar.Location = new Point((dgvIntaktsRapport.Columns[customerIDColumn].Width + dgvIntaktsRapport.Columns[customerNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["GradAvtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width + dgvIntaktsRapport.Columns["GradTillägg"].Width + dgvIntaktsRapport.Columns["Budget"].Width), 0);
                tBSumTimmar.Width = dgvIntaktsRapport.Columns["Timmar"].Width;

                hogerJustera();
                for (int i = 0; i < dgvIntaktsRapport.Rows.Count; i++)
                {
                    avtal = avtal + int.Parse(dgvIntaktsRapport.Rows[i].Cells["Avtal"].Value.ToString());
                }
                for (int j = 0; j < dgvIntaktsRapport.Rows.Count; j++)
                {
                    tillägg = tillägg + int.Parse(dgvIntaktsRapport.Rows[j].Cells["Tillägg"].Value.ToString());
                }
                for (int k = 0; k < dgvIntaktsRapport.Rows.Count; k++)
                {
                    budget = budget + int.Parse(dgvIntaktsRapport.Rows[k].Cells["Budget"].Value.ToString());
                }
                for (int l = 0; l < dgvIntaktsRapport.Rows.Count; l++)
                {
                    timmar = timmar + int.Parse(dgvIntaktsRapport.Rows[l].Cells["Timmar"].Value.ToString());
                }


            }
            if (val == "Budget per produkt inom produktionsområde")
            {
                lblTotalbelopp.Visible = true;
                lblTotalbelopp.Text = "Totalbelopp:";
                tBAntal.Visible = false;
                tBSumAvtal.Visible = true;
                tBSumAvtal.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width), 0);
                tBSumAvtal.Width = dgvIntaktsRapport.Columns[avtalColumn].Width;
                tBSumTillägg.Visible = true;
                tBSumTillägg.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width), 0);
                tBSumTillägg.Width = dgvIntaktsRapport.Columns["Tillägg"].Width;
                tBSumBudget.Visible = true;
                tBSumBudget.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width + dgvIntaktsRapport.Columns["Timmar"].Width), 0);
                tBSumBudget.Width = dgvIntaktsRapport.Columns["Budget"].Width;
                tBSumTimmar.Visible = true;
                tBSumTimmar.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width), 0);
                tBSumTimmar.Width = dgvIntaktsRapport.Columns["Timmar"].Width;
                hogerJustera();
                for (int i = 0; i < dgvIntaktsRapport.Rows.Count; i++)
                {
                    avtal = avtal + int.Parse(dgvIntaktsRapport.Rows[i].Cells["Avtal"].Value.ToString());
                }
                for (int j = 0; j < dgvIntaktsRapport.Rows.Count; j++)
                {
                    tillägg = tillägg + int.Parse(dgvIntaktsRapport.Rows[j].Cells["Tillägg"].Value.ToString());
                }
                for (int k = 0; k < dgvIntaktsRapport.Rows.Count; k++)
                {
                    budget = budget + int.Parse(dgvIntaktsRapport.Rows[k].Cells["Budget"].Value.ToString());
                }
                for (int l = 0; l < dgvIntaktsRapport.Rows.Count; l++)
                {
                    timmar = timmar + int.Parse(dgvIntaktsRapport.Rows[l].Cells["Timmar"].Value.ToString());
                }
            }
            if (val == "Budget per kund fallande")
            {
                tBSumAvtal.Visible = true;
                tBSumAvtal.Location = new Point((dgvIntaktsRapport.Columns["KundID"].Width + dgvIntaktsRapport.Columns["Kundnamn"].Width), 0);
                tBSumAvtal.Width = dgvIntaktsRapport.Columns["Avtal"].Width;
                tBSumTillägg.Visible = true;
                tBSumTillägg.Location = new Point((dgvIntaktsRapport.Columns["KundID"].Width + dgvIntaktsRapport.Columns["Kundnamn"].Width + dgvIntaktsRapport.Columns["Avtal"].Width), 0);
                tBSumTillägg.Width = dgvIntaktsRapport.Columns["Tillägg"].Width;
                tBSumTimmar.Visible = true;
                tBSumTimmar.Location = new Point((dgvIntaktsRapport.Columns["KundID"].Width + dgvIntaktsRapport.Columns["Kundnamn"].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width), 0);
                tBSumTimmar.Width = dgvIntaktsRapport.Columns["Timmar"].Width;
                tBSumBudget.Visible = true;
                tBSumBudget.Location = new Point((dgvIntaktsRapport.Columns["KundID"].Width + dgvIntaktsRapport.Columns["Kundnamn"].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width + dgvIntaktsRapport.Columns["Timmar"].Width), 0);
                tBSumBudget.Width = dgvIntaktsRapport.Columns["Budget"].Width;
                hogerJustera();

                for (int i = 0; i < dgvIntaktsRapport.Rows.Count; i++)
                {
                    avtal = avtal + int.Parse(dgvIntaktsRapport.Rows[i].Cells["Avtal"].Value.ToString());
                }
                for (int j = 0; j < dgvIntaktsRapport.Rows.Count; j++)
                {
                    tillägg = tillägg + int.Parse(dgvIntaktsRapport.Rows[j].Cells["Tillägg"].Value.ToString());
                }
                for (int k = 0; k < dgvIntaktsRapport.Rows.Count; k++)
                {
                    budget = budget + int.Parse(dgvIntaktsRapport.Rows[k].Cells["Budget"].Value.ToString());
                }
                for (int l = 0; l < dgvIntaktsRapport.Rows.Count; l++)
                {
                    timmar = timmar + int.Parse(dgvIntaktsRapport.Rows[l].Cells["Timmar"].Value.ToString());
                }
            }
            if (val == "Budget per produkt fallande")
            {
                tBSumAvtal.Visible = true;
                tBSumAvtal.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width), 0);
                tBSumAvtal.Width = dgvIntaktsRapport.Columns[avtalColumn].Width;
                tBSumTillägg.Visible = true;
                tBSumTillägg.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width), 0);
                tBSumTillägg.Width = dgvIntaktsRapport.Columns["Tillägg"].Width;
                tBSumTimmar.Visible = true;
                tBSumTimmar.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width), 0);
                tBSumTimmar.Width = dgvIntaktsRapport.Columns["Timmar"].Width;
                tBSumBudget.Visible = true;
                tBSumBudget.Location = new Point((dgvIntaktsRapport.Columns[prodIDColumn].Width + dgvIntaktsRapport.Columns[prodNameColumn].Width + dgvIntaktsRapport.Columns["Avtal"].Width + dgvIntaktsRapport.Columns["Tillägg"].Width + dgvIntaktsRapport.Columns["Timmar"].Width), 0);
                tBSumBudget.Width = dgvIntaktsRapport.Columns["Budget"].Width;
                hogerJustera();

                for (int i = 0; i < dgvIntaktsRapport.Rows.Count; i++)
                {
                    avtal = avtal + int.Parse(dgvIntaktsRapport.Rows[i].Cells["Avtal"].Value.ToString());
                }
                for (int j = 0; j < dgvIntaktsRapport.Rows.Count; j++)
                {
                    tillägg = tillägg + int.Parse(dgvIntaktsRapport.Rows[j].Cells["Tillägg"].Value.ToString());
                }
                for (int k = 0; k < dgvIntaktsRapport.Rows.Count; k++)
                {
                    budget = budget + int.Parse(dgvIntaktsRapport.Rows[k].Cells["Budget"].Value.ToString());
                }
                for (int l = 0; l < dgvIntaktsRapport.Rows.Count; l++)
                {
                    timmar = timmar + int.Parse(dgvIntaktsRapport.Rows[l].Cells["Timmar"].Value.ToString());
                }
            }
            if (val == "Budget per produktgrupp")
            {
                dgvIntaktsRapport.Columns["ProduktGruppnamn"].Width = 200;
                hogerJustera();
            }
            if (val == "Budget per produktionsområde")
            {
                dgvIntaktsRapport.Columns["Produktionsområde"].Width = 200;
                hogerJustera();
            }
            if (val == "Budget per kundkategori")
            {
                dgvIntaktsRapport.Columns["Kundkategori"].Width = 200;
                hogerJustera();
            }
            if (val == "Budget per produktkategori")
            {
                dgvIntaktsRapport.Columns["Produktkategori"].Width = 200;
                hogerJustera();
            }
            if (val == "Totalt")
            {
                hogerJustera();
            }

            tBAntal.Text = antal.ToString();
            tBSumAvtal.Text = avtal.ToString();
            tBSumTillägg.Text = tillägg.ToString();
            tBSumBudget.Text = budget.ToString();
            tBSumTimmar.Text = timmar.ToString();
        }

        public void ClearTB()
        {

            lblTotalbelopp.Visible = false;
            tBAntal.Visible = false;
            tBSumAvtal.Visible = false;
            tBSumTillägg.Visible = false;
            tBSumBudget.Visible = false;
            tBSumTimmar.Visible = false;

        }

        private void dgvIntaktsRapport_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {



            if (dgvIntaktsRapport.Rows.Count == 0)
            {
                tBAntal.Text = "";
                tBSumAvtal.Text = "";
                tBSumBudget.Text = "";
                tBSumTimmar.Text = "";
            }
        }
        private void hogerJustera()
        {
            dgvIntaktsRapport.Columns["Avtal"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Tillägg"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Budget"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Timmar"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Avtal"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Tillägg"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Budget"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvIntaktsRapport.Columns["Timmar"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
        }

        public void UpdateDgvSource(object o)
        {
            dgvIntaktsRapport.DataSource = o;
        }

        public void UpdateDgvSourceKundList()
        {

        }

        public void UpdateDgvSourceKunderPerProdukt(string prodID, string prodNamn)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.KunderPerProdukt(prodID, prodNamn);
            ColumnHider("Kunder per produkt");
            TbSum("Kunder per produkt");
        }

        public void UpdateDgvSourceEjBudgeteradeKunder()
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.NotBudgetedCustomers();
            ColumnHider("Ej budgeterade kunder");
            TbSum("Ej budgeterade kunder");
        }

        public void UpdateDgvSourceEjBudgeteradeProdukter()
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.NotBudgetedProducts();
            ColumnHider("Ej budgeterade produkter");
            TbSum("Ej budgeterade produkter");
        }

        public void UpdateDgvSourceBudgetPerKund(string currentKundID, string cmbProduktNamn, string cmbProduktgrupp, string cmbProduktKategori, string prodDepartment)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetPerKund(currentKundID, cmbProduktNamn, cmbProduktgrupp, cmbProduktKategori, prodDepartment);
            ColumnHider("Budget per kund");
            TbSum("Budget per kund");
        }

        public void UpdateDgvSourceBudgetPerKundOchProdukt(string kundID, string prodID, string prodNamn)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetPerKundOchProdukt(kundID, prodID, prodNamn);
            ColumnHider("Budget per kund och produkt");
            TbSum("Budget per kund och produkt");
        }

        public void UpdateDgvSourceBudgetPerKundOchProduktgrupp(string currentKundID, string cmbProduktgrupp)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.budgetedCustNProductgroups(currentKundID, cmbProduktgrupp);
            ColumnHider("Budget per kund och produktgrupp");
            TbSum("Budget per kund och produktgrupp");
        }

        public void UpdateDgvSourceBudgetPerProduktionsområde(string prodOmrd)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedProductAreas(prodOmrd);
        }

        public void UpdateDgvSourceBudgetPerProduktInomProduktionsområde(string prodDepartment)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedProductsPerAreas(prodDepartment);
            TbSum("Budget per produkt inom produktionsområde");
        }

        public void UpdateDgvSourceBudgetPerProduktOchProduktionsområde(string currentKundID, string prodDepartment)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.budgetedCustNProductionAreas(currentKundID, prodDepartment);
            ColumnHider("Budet per kund och produktionsområde");
            TbSum("Budget per kund och produktionsområde");
        }

        public void UpdateDgvSourceBudgetPerProdukt(string prodid)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetPerProduct(prodid);
            ColumnHider("Budget per produkt");
            TbSum("Budget per produkt");
        }

        public void UpdateDgvSourceBudgetPerProduktgrupp(string cmbProduktgrupp)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedProductGroups(cmbProduktgrupp);
        }

        public void UpdateDgvSourceBudgetPerProduktkategori(string cmbProduktkategori) {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedProductCategories(cmbProduktkategori);

        }

        public void UpdateDgvSourceBudgetPerKundkategori(string kundKategori)
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedCustCategory(kundKategori);
        }

        public void UpdateDgvSourceBudgetPerKundFallande()
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedCustFalling();
            TbSum("Budget per kund fallande");
        }

        public void UpdateDgvSourceBudgetPerProduktFallande()
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedProductsFalling();
            TbSum("Budget per produkt fallande");
        }

        public void UpdateDgvSourceTotalt()
        {
            rC = new Domain.RapportController();
            dgvIntaktsRapport.DataSource = rC.BudgetedTotals();
        }
    }
}
